/*:
* @plugindesc 枫之舞功能 - 金钱、物品、队员变更提示
* @author 老饕
* @version 1.0.0
* @date 2020.2.23

* @help
* 此插件实现金钱、物品、队员变更时，自动触发公共事件。
* 设有四个变量，用于存储变更的信息，详见变量说明。
* 在公共事件里利用文本代码调取变量值，显示对应文字即可实现金钱、物品、队
* 员变更的自动提示。
* 
* 【插件指令】
* ChangeItemMsg on 显示自动提示
* ChangeItemMsg off 关闭自动提示
* 
* @param ShowMsg
* @text 是否显示变动提示
* @type boolean
* @on  显示提示
* @off 关闭提示
* @desc 是否显示金钱物品队员变动提示
* @default false
* 

* @param CommonEventID
* @text 自动执行的公共事件编号（物品得失/队员变更提示）
* @type number
* @min 1
* @desc 金钱、物品、队员时自动触发的公共事件编号
* @default 1
* 
* @param QuestCommonEventID
* @text 自动执行的公共事件编号（任务系统提示）
* @type number
* @min 1
* @desc 任务变更时自动触发的公共事件编号
* @default 1
*
* @param ---变量---
* @param TypeVarID
* @parent ---变量---
* @text 类型（变量编号）
* @type number
* @min 1
* @desc 记录类型的变量编号，可用于显示文字窗口中判断事件类型（变量值：0-金钱，1-物品，2-武器，3-护甲，4-队员）
* @default 1
* 
* @param OperationVarID
* @parent ---变量---
* @text 操作（变量编号）
* @type number
* @min 1
* @desc 记录操作类型的变量编号，可用于显示文字窗口中判断操作类型（变量值：0-增加，1-减少）
* @default 2
* 
* @param ObjectVarID
* @parent ---变量---
* @text 对象（变量编号）
* @type number
* @min 1
* @desc 记录变更内容的变量编号，可用于显示文字窗口中显示变更对象（变量值：道具-道具编号，队员-队员编号）
* @default 3
* 
* @param NumberVarID
* @parent ---变量---
* @text 数量（变量编号）
* @type number
* @min 1
* @desc 记录数量的变量编号，可用于显示文字窗口中判断操作数字（变量值：金钱数/道具数量）
* @default 4


*/

var SWDA_ChangeItemMsg = SWDA_ChangeItemMsg || {};

var parameters = PluginManager.parameters('SWDA_ChangeItemMsg');

SWDA_ChangeItemMsg.ShowMsg = eval(parameters['ShowMsg']) || true;
SWDA_ChangeItemMsg.CommonEventID = Number(parameters['CommonEventID']) || 1;
SWDA_ChangeItemMsg.QuestCommonEventID = Number(parameters['QuestCommonEventID']) || 1;
SWDA_ChangeItemMsg.TypeVarID = Number(parameters['TypeVarID']) || 1;
SWDA_ChangeItemMsg.OperationVarID = Number(parameters['OperationVarID']) || 2;
SWDA_ChangeItemMsg.ObjectVarID = Number(parameters['ObjectVarID']) || 3;
SWDA_ChangeItemMsg.NumberVarID = Number(parameters['NumberVarID']) || 4;

// Change Gold
SWDA_ChangeItemMsg.command125 = Game_Interpreter.prototype.command125;
Game_Interpreter.prototype.command125 = function() {
	SWDA_ChangeItemMsg.command125.call(this);
	/*
    var value = this.operateValue(this._params[0], this._params[1], this._params[2]);
    $gameParty.gainGold(value);
    //return true;
	*/
	if (SWDA_ChangeItemMsg.ShowMsg){
		$gameVariables.setValue(SWDA_ChangeItemMsg.TypeVarID, 0);						// 类型：金钱
		$gameVariables.setValue(SWDA_ChangeItemMsg.OperationVarID, this._params[0]);	// 操作：增/减
		$gameVariables.setValue(SWDA_ChangeItemMsg.NumberVarID, this._params[2]);		// 数量
		
		var commonEvent = $dataCommonEvents[SWDA_ChangeItemMsg.CommonEventID];
		var eventId = this.isOnCurrentMap() ? this._eventId : 0;
		this.setupChild(commonEvent.list, eventId);
	}
	return true;
};

// Change Items
SWDA_ChangeItemMsg.command126 = Game_Interpreter.prototype.command126;
Game_Interpreter.prototype.command126 = function() {
	SWDA_ChangeItemMsg.command126.call(this);
	/*
    var value = this.operateValue(this._params[1], this._params[2], this._params[3]);
    $gameParty.gainItem($dataItems[this._params[0]], value);
    return true;
	*/
	if (SWDA_ChangeItemMsg.ShowMsg){
		$gameVariables.setValue(SWDA_ChangeItemMsg.TypeVarID, 1);						// 类型：物品
		$gameVariables.setValue(SWDA_ChangeItemMsg.OperationVarID, this._params[1]);	// 操作：增/减
		$gameVariables.setValue(SWDA_ChangeItemMsg.ObjectVarID, this._params[0]);		// 对象：物品ID
		$gameVariables.setValue(SWDA_ChangeItemMsg.NumberVarID, this._params[3]);		// 数量
		
		var commonEvent = $dataCommonEvents[SWDA_ChangeItemMsg.CommonEventID];
		var eventId = this.isOnCurrentMap() ? this._eventId : 0;
		this.setupChild(commonEvent.list, eventId);
	}
	return true;
};

// Change Weapons
SWDA_ChangeItemMsg.command127 = Game_Interpreter.prototype.command127;
Game_Interpreter.prototype.command127 = function() {
	SWDA_ChangeItemMsg.command127.call(this);
	/*
    var value = this.operateValue(this._params[1], this._params[2], this._params[3]);
    $gameParty.gainItem($dataWeapons[this._params[0]], value, this._params[4]);
    return true;
	*/
	if (SWDA_ChangeItemMsg.ShowMsg){
		$gameVariables.setValue(SWDA_ChangeItemMsg.TypeVarID, 2);						// 类型：武器
		$gameVariables.setValue(SWDA_ChangeItemMsg.OperationVarID, this._params[1]);	// 操作：增/减
		$gameVariables.setValue(SWDA_ChangeItemMsg.ObjectVarID, this._params[0]);		// 对象：武器ID
		$gameVariables.setValue(SWDA_ChangeItemMsg.NumberVarID, this._params[3]);		// 数量
		var commonEvent = $dataCommonEvents[SWDA_ChangeItemMsg.CommonEventID];
		var eventId = this.isOnCurrentMap() ? this._eventId : 0;
		this.setupChild(commonEvent.list, eventId);
	}
	return true;
};

// Change Armors
SWDA_ChangeItemMsg.command128 = Game_Interpreter.prototype.command128;
Game_Interpreter.prototype.command128 = function() {
	SWDA_ChangeItemMsg.command128.call(this);
	/*
    var value = this.operateValue(this._params[1], this._params[2], this._params[3]);
    $gameParty.gainItem($dataArmors[this._params[0]], value, this._params[4]);
    return true;
	*/
	if (SWDA_ChangeItemMsg.ShowMsg){
		$gameVariables.setValue(SWDA_ChangeItemMsg.TypeVarID, 3);						// 类型：护甲
		$gameVariables.setValue(SWDA_ChangeItemMsg.OperationVarID, this._params[1]);	// 操作：增/减
		$gameVariables.setValue(SWDA_ChangeItemMsg.ObjectVarID, this._params[0]);		// 对象：护甲ID
		$gameVariables.setValue(SWDA_ChangeItemMsg.NumberVarID, this._params[3]);		// 数量
		var commonEvent = $dataCommonEvents[SWDA_ChangeItemMsg.CommonEventID];
		var eventId = this.isOnCurrentMap() ? this._eventId : 0;
		this.setupChild(commonEvent.list, eventId);
	}
	return true;
};

// Change Party Member
SWDA_ChangeItemMsg.command129 = Game_Interpreter.prototype.command129;
Game_Interpreter.prototype.command129 = function() {
	SWDA_ChangeItemMsg.command129.call(this);
	/*
    var actor = $gameActors.actor(this._params[0]);
    if (actor) {
        if (this._params[1] === 0) {  // Add
            if (this._params[2]) {   // Initialize
                $gameActors.actor(this._params[0]).setup(this._params[0]);
            }
            $gameParty.addActor(this._params[0]);
        } else {  // Remove
            $gameParty.removeActor(this._params[0]);
        }
    }
    return true;
	*/
	if (SWDA_ChangeItemMsg.ShowMsg){
		$gameVariables.setValue(SWDA_ChangeItemMsg.TypeVarID, 4);						// 类型：队员
		$gameVariables.setValue(SWDA_ChangeItemMsg.OperationVarID, this._params[1]);	// 操作：入队/离队
		$gameVariables.setValue(SWDA_ChangeItemMsg.ObjectVarID, this._params[0]);		// 对象：角色ID
		var commonEvent = $dataCommonEvents[SWDA_ChangeItemMsg.CommonEventID];
		var eventId = this.isOnCurrentMap() ? this._eventId : 0;
		this.setupChild(commonEvent.list, eventId);
	}
	return true;
};


// 任务系统提示（YEP_QuestJournal）
SWDA_ChangeItemMsg.Game_Interpreter_pluginCommand =
  Game_Interpreter.prototype.pluginCommand;
Game_Interpreter.prototype.pluginCommand = function(command, args) {
  SWDA_ChangeItemMsg.Game_Interpreter_pluginCommand.call(this, command, args);
  if (SWDA_ChangeItemMsg.ShowMsg){
	  if (command === 'Quest') {
		this.processQuestMsg(this.argsToString(args));
	  }
  }
};


Game_Interpreter.prototype.processQuestMsg = function(line) {
  var showQuestMsg = true;

  if (this._index-1>=0){
	var lastEvent = this._list[this._index-1];
    if (lastEvent.code==356){
		var lastCommand = lastEvent.parameters[0].split(" ").shift();
		if (lastCommand == 'Quest')
			showQuestMsg = false;
	}
  }
  if (showQuestMsg){
	  var commonEvent = $dataCommonEvents[SWDA_ChangeItemMsg.QuestCommonEventID];
	  var eventId = this.isOnCurrentMap() ? this._eventId : 0;
	  this.setupChild(commonEvent.list, eventId);
  }  
};

//---------------------------
//          Game_Interpreter【插件指令】
//---------------------------
SWDA_ChangeItemMsg.PLUGIN_COMMAND = Game_Interpreter.prototype.pluginCommand;
Game_Interpreter.prototype.pluginCommand = function(command, args) {
	SWDA_ChangeItemMsg.PLUGIN_COMMAND.call(this, command, args);

	
	if (command == 'ChangeItemMsg'){
		var ChangeItemMsgAction = args[0];
		if(ChangeItemMsgAction.toUpperCase() == "ON")
			SWDA_ChangeItemMsg.ShowMsg = true;
		if(ChangeItemMsgAction.toUpperCase() == "OFF")
			SWDA_ChangeItemMsg.ShowMsg = false;
	}
};
